﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>加载图片 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 加载图片 function loads a picture from file and returns a bitmap or icon handle." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>加载图片</h1>

<p>载入图像文件并返回位图或图标句柄.</p>
<pre class="Syntax">Handle := <span class="func">加载图片</span>(Filename <span class="optional">, Options, ByRef ImageType</span>)</pre>

<h2 id="Parameters">参数</h2>
<dl>

  <dt>Filename</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>图片的文件名, 如果未指定绝对路径, 则通常假定在 <a href="../Variables.htm#WorkingDir">内_工作目录</a> 目录中. 如果指定了 DLL 或 EXE 文件的名称而没有路径, 则可以从当前可执行文件目录(AutoHotkey.exe 或已编译的脚本) 或系统目录加载.</p>
  </dd>
  
  <dt>Options</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>以下选项中的零个或多个字符串, 每个选项之间以空格或制表符分隔::</p>
    <p><strong>W</strong><em>n</em> 和 <strong>H</strong><em>n</em>: 待载入图像的宽度和高度,  <em>n</em> 为整数. 如果省略某个尺寸或指定为 -1, 该尺寸将在保持宽高比的情况下根据另一个尺寸进行计算. 如果两个尺寸都被省略, 将使用图像的原始尺寸. 如果任一尺寸被指定为 0, 则该尺寸仍会使用原始尺寸. 例如: <code>"w80 h50"</code>, <code>"w48 h-1"</code> 或 <code>"w48"</code>(保持宽高比), <code>"h0 w100"</code>(使用原始高度但覆盖宽度).</p>
    <p><strong>Icon</strong><em>n</em>: 指代多图标文件(一般是 EXE 或 DLL 文件) 中待载入图标的序号. 例如, <code>"Icon2"</code> 载入文件的第二个图标. 任何支持的图像格式都可以通过指定 <code>"Icon1"</code> 来转换为图标. 但是, 如果省略 <em>ImageType</em> 参数, 图标将转换回位图.</p>
    <p><strong>GDI+</strong>: 尝试使用 GDI+ 的方式载入图像. 例如, <code>"GDI+ w100"</code>.</p>
  </dd>
  
  <dt>ImageType</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#variables">变量</a></p>
    <p>如果指定了变量, 它被赋值为表示返回句柄类型的数字: 0(IMAGE_BITMAP), 1(IMAGE_ICON) 或 2(IMAGE_CURSOR).</p>
    <p>如果忽略该参数或不是一个变量, 则返回值始终是位图句柄(图标/光标类型会按需转换). 这是因为可靠地使用或删除位图/图标/光标句柄需要知道它是哪种类型.</p>
  </dd>

</dl>

<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
<p>函数根据指定的图片或图标返回<a href="../misc/ImageHandles.htm">位图或图标句柄</a>.</p>

<h2 id="Remarks">备注</h2>
<p>加载图片 也支持<a href="../misc/ImageHandles.htm">句柄语法</a>, 如从一个已载入到内存中的图标或位图创建一个可调整大小的图像, 或将一个图标通过忽略 <em>ImageType</em> 转换成位图.</p>
<p>如果图像需要从内存中释放, 请调用任何适合于句柄类型的函数.</p>
<pre>如果 (not ImageType)  <em>; IMAGE_BITMAP(0) 或 ImageType 参数省略.</em>
    动态库调用("DeleteObject", "ptr", Handle)
否则 如果 (ImageType = 1)  <em>; IMAGE_ICON</em>
    动态库调用("DestroyIcon", "ptr", Handle)
否则 如果 (ImageType = 2)  <em>; IMAGE_CURSOR</em>
    动态库调用("DestroyCursor", "ptr", Handle)</pre>

<h2 id="Related">相关</h2>
<p><a href="../misc/ImageHandles.htm">Image Handles</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExSlideShow">
<p><a href="#ExSlideShow">#1</a>: 预加载并复用一些图像.</p>
<pre>Pics := []
<em>; 寻找几张图像用来展示.</em>
遍历文件, 内_系统目录 &quot;\Web\Wallpaper\*.jpg", "R&quot;
{
    <em>; 载入找到的图像并添加到数组中.</em>
    Pics.Push(加载图片(内_遍历文件全路径))
}
如果 !Pics.Length
{
    <em>; 如果发生找不到文件的情形, 将正确的路径手动添加到上述的 循环 循环中.</em>
    信息框("No pictures found! Try a different directory.")
    退出应用
}
<em>; 创建图标控件, 保持第一张图的宽高比.</em>
MyGui := 界面.新建()
Pic := MyGui.Add("Pic", "w600 h-1 vPic +Border", "HBITMAP:*" Pics[1])
MyGui.OnEvent("Escape", (*) =&gt; 退出应用())
MyGui.OnEvent("Close", (*) =&gt; 退出应用())
MyGui.显示
循环
{
    <em>; 切换图片!</em>
    Pic.Value := "HBITMAP:*" Pics[余数(内_循环次数, Pics.Length)+1]
    等待 3000
}</pre>
</div>

</body>
</html>